/*
 * fila.c
 *
 *  Created on: 21/03/2011
 *      Author: joao
 */

#include <stdio.h>

#include "fila.h"

#include "erro.h"

void InicializaFila (Fila *f){
	f->vazia=1;
	f->inicio=0;
	f->fim=-1;
}

void InsereFila (TipoDoElemento x, Fila *f){
	if((f->fim+1)%MAX == f->inicio && f->vazia != 1)
		overflow();
	else{
		f->fim = (f->fim+1)%MAX;
		f->elementos[f->fim] = x;
		if(f->vazia == 1)
			f->vazia = 0;
	}
}

void RemoveFila (Fila *f){
	if (f->vazia == 1)
		underflow();
	else{
		f->inicio = (f->inicio+1)%MAX;
		/* O novo inicio passou do fim ? */
		if (f->inicio == (f->fim+1)%MAX)
		f->vazia = 1;
	}
}

TipoDoElemento BuscaInicio(Fila *f){
	if(f->vazia!=1)
		return(f->elementos[f->inicio]);
	else{
		underflow();
		return -1;
	}
}

int FilaVazia(Fila *f){
	if(f->vazia == 1)
		return 1;
	else
		return 0;
}
